[Amazon FSx for NetApp ONTAP] Tamperproof SnapshotによってSnapshotの保護をしてみた

[Amazon FSx for NetApp ONTAP] Tamperproof SnapshotによってSnapshotの保護をしてみた

Snapshotを保護したい場合に
Clock Icon2024.07.29

Snapshotを削除できないようにしたい

こんにちは、のんピ(@non____97)です。

皆さんはAmazon FSx for NetApp ONTAP(以降FSxN)のSnapshotを削除できないようしたいなと思ったことはありますか? 私はあります。

間違ってSnapshotを削除してしまったり、悪意のある攻撃者によってSnapshotが削除されてしまうと、リストアできたデータもリストアできません。

そんな時に役立つのがTamperproof Snapshotです。

Tamperproof SnapshotはAWS Blogsでもイミュータブルバックアップソリューションとして紹介されています。

https://aws.amazon.com/jp/blogs/news/immutable-backup-written-by-netapp-2024/

Tamperproof Snapshotについて、より詳細に説明します。

いきなりまとめ

  • Tamperproof Snapshotとはロック期限が切れるまでSnapshotを保護する機能
    • 誤ってSnapshotが削除されたり、悪意を持って削除されたりすることを防ぐ
  • SnapLockボリュームである必要はない
    • ボリュームでSnapshotのロックを有効にして、Snapshot取得時にロック期限を指定するだけ
  • ロック期限の変更は可能
    • 現在のロック期限よりも短くすることは可能
    • 通常のSnapshotにロック期限を設定することも可能
  • ロック期限が切れていない最新のSnapshotからしかSnapRestoreできない
    • SnapRestoreを活用したい場合は、ロック期限に要注意
  • ロック期間中はボリュームの削除はできない

Tamperproof Snapshotとは

概要

Tamperproof Snapshotとはロック期限が切れるまでSnapshotを保護する機能です。上手に活用することで誤ってSnapshotが削除されたり、悪意を持って削除されたりすることを防ぐことが可能です。Tamperproof SnapshotはONTAP 9.12.1からサポートされました。

https://docs.netapp.com/ja-jp/ontap/snaplock/snapshot-lock-concept.html

NetApp ONTAPにはSnapLockというWORM機能があります。SnapLockを使用することで、コミットされたデータはロック期間が経過するまで基本的に削除はできません。

https://dev.classmethod.jp/articles/amazon-fsx-netapp-ontap-snaplock/

SnapLockを使用する場合はボリュームをSnapLockボリュームにすることが求められます。一方、Tamperproof SnapshotではSnapLockボリュームでなくとも、Snapshotも保護することが可能です。

AWS BackupのWORM機能であるボールトロックは無料で使用できます。

https://dev.classmethod.jp/articles/aws-backup-supports-vault-lock/

SnapLockのようにAFS(アクティブファイルシステム)の保護までは求めておらず、Snapshotさえ無事であれば問題ないという場合にTamperproof Snapshotは役立ちそうです。

Tamperproof SnapshotによってSnapshotが無事であれば、SnapRestoreによってSnapshot取得時点にボリュームの状態を瞬時に戻すことが可能です。ランサムウェア対策にも効果を発揮しそうですね。

https://dev.classmethod.jp/articles/amazon-fsx-for-netapp-ontap-restore-volume-contents-from-a-snapshot-with-ontap-cli/

Tamperproof Snapshotでサポートされている機能は以下のとおりです。

  • FlexVolume
  • FlexGroup
    • SnapshotのロックはルートコンスティチュエントSnapshotでのみ発生行われる
    • FlexGroupを削除できるのは、ルートコンスティチュエントの有効期限を過ぎた場合のみ
  • FlexVolume からFlexGroup への変換
    • 変換後もSnapshotコピーはロックされたまま
  • ボリュームクローンとファイルクローン
    • ロックされたSnapshotからボリュームのクローンとファイルのクローンを作成できます。

注意点

注意点は以下のとおりです。

  1. ONTAP CLIを使用する場合、クラスタ内のすべてのノードでONTAP 9.12.1以降が必要
  2. System Managerを使用する場合、すべてのノードでONTAP 9.13.1以降が必要
  3. クラスタにSnapLockライセンスが必要
  4. クラスタのコンプライアンスクロックを初期化する必要がある
  5. Snapshotロックが有効なボリュームがある場合、ONTAP 9.12.1以降へのアップグレードは可能だが、ロックされたSnapshotが全て期限切れになるまで以前のバージョンへのリバートはできまない
  6. ロックされたSnapshotがある場合、ボリュームの有効期限は最も長いSnapshotの有効期限に設定される
  7. ロックされたSnapshotのロック期間は、保持数の制限よりも優先される
  8. SnapMirror relastionshipでは、デスティネーションでSnapshotロックが有効な場合、レプリケートされるSnapshotにロック期間が適用される
  9. SnapLock以外のボリュームでは、Snapshotの名前変更が可能
  10. SnapMirror relastionshipのプライマリボリュームでのSnapshotの名前変更は、MirrorAllSnapshotsポリシーの場合のみセカンダリに反映される
  11. ONTAP CLIでは、ロックされたSnapshotのリストアは、それが最新の場合のみ可能
  12. リストア対象のSnapshotより新しい期限切れ前のSnapshotがある場合、リストア処理は失敗する

2024/7/29時点でデプロイされるFSxNファイルシステムはONTAP 9.14.1なので、ONTAPのバージョンはあまり注意しなくとも良いでしょう。

FSxNではクラスタにSnapLockライセンスはデフォルトで導入済みで、クラスタのコンプライアンスクロックも初期化されています。こちらも心配する必要はありません。

もっとも注意すべきなのは「Tamperproof Snapshotがあるボリュームは削除できない」と「SnapRestoreする際に、期限切れ前のTamperproof Snapshotがある場合はリストアが失敗する」というものでしょうか。

前者についてはそのままです。Snapshotのロック期間を100年にすると、そのボリュームは100年間削除することができません。FSxNファイルシステムはルートボリューム以外を削除しなければ削除できないため、必然的に100年間FSxNファイルシステムの削除をすることができません。そのような場合はAWSアカウントを閉鎖することになると推測します。

後者については全てのSnapshotをTamperproof Snapshotにすると、有効期限切れ前の最新のSnapshotからしかSnapRestoreできません。Snapshotのロック有無ごとのSnapRestore可否を図に表すと以下のとおりです。

1.Tamperproof Snapshotを使用する場合のSnapRestore

もし、7/4の状態に戻したいのであれば、Snapshotディレクトリからcpなどで手動でデータを移動させる必要があります。利用する際はSnapRestoreで戻す範囲を考慮すると良いでしょう。

おおよそボリューム全体を特定時点にリストアする際は、最後に取得されたSnapshotを使いたいことがほとんどでしょう。hourlyでロック期間1時間にしておけば多くの運用パターンで対応できそうな気がしています。

Tamperproof Snapshotがサポートしていない機能は以下のとおりです。

  • Cloud Volumes ONTAP
  • 整合グループ
  • FabricPool
  • FlexCache
  • SMtape
  • SnapMirror active sync
  • -scheduleを使用したSnapMirrorポリシールール
  • SnapMirror synchronous
  • SVMのデータの移動

FabricPoolはサポートされないのは気になりますね。後ほど検証します。

-scheduleを使用したSnapMirrorポリシールール」については、ほとんどの場合においてスケジュール設定をするのはSnapMirror relastionship単位であり、普段は気にする必要はないです。

料金

2024//7/29時点ではTamperproof Snapshotについて追加料金はかかりません。

ただし、今後SnapLockライセンスの料金体系が適用される可能性もあるので注意しましょう。

やってみた

検証環境

検証環境は以下のとおりです。

[Amazon FSx for NetApp ONTAP]NetApp BlueXPを使ってFlexCacheボリュームを作ってみた

以下記事の検証で使用したものを再利用します。東京リージョンとバージニア北部リージョンにFSxNファイルシステムを用意しています。

https://dev.classmethod.jp/articles/amazon-fsx-netapp-ontap-bluexp-flexcache-volume/

Snapshotロックボリュームの作成

Snapshotロックボリュームの作成から試します。

バージニア北部リージョンのFSxNファイルシステムで作業します。

$ ssh fsxadmin@management.fs-09b61052262da98b8.fsx.us-east-1.amazonaws.com
(fsxadmin@management.fs-09b61052262da98b8.fsx.us-east-1.amazonaws.com) Password:

Last login time: 7/19/2024 04:48:28
Your privilege has changed since last login.
::> version
NetApp Release 9.14.1P5: Sat May 18 19:42:16 UTC 2024

::> set diag

Warning: These diagnostic commands are for use by NetApp personnel only.
Do you want to continue? {y|n}: y

ONTAPのバージョンはONTAP 9.14.1ですね。

SnapLockのコンプライアンスクロックが初期化済みであることを確認します。

8::*> snaplock compliance-clock
    initialize ntp        show

::*> snaplock compliance-clock show
Node        ComplianceClock Time                Node ID    ID
----------- ----------------------------------- ---------- -------------
FsxId09b61052262da98b8-01
            Mon Jul 29 06:09:33 UTC 2024 +00:00 3323135574 1719462892418
FsxId09b61052262da98b8-02
            Mon Jul 29 06:09:31 UTC 2024 +00:00 3323135653 1719462891641
2 entries were displayed.

それでは、Snapshotロックボリュームを作成します。

まず、ボリューム作成時に併せてSnapshotのロックを有効化します。

::*> volume create -vserver svm_use1 -volume vol_ss_lock_1 -aggregate aggr1 -size 16GB -state online -policy default -tiering-policy none -junction-path /vol_ss_lock_1 -snapshot-locking-enabled true

Warning: Snapshot copy locking is being enabled on volume "vol_ss_lock_1" in Vserver "svm_use1". It cannot be disabled until all locked Snapshot copies are past their expiry time. A volume with unexpired locked
         Snapshot copies cannot be deleted.
Do you want to continue? {y|n}: y
[Job 469] Job succeeded: Successful

::*> volume show -volume vol_ss_lock_1 -fields snapshot-locking-enabled
vserver  volume        snapshot-locking-enabled
-------- ------------- ------------------------
svm_use1 vol_ss_lock_1 true

作成時にSnapshotロックの場合の注意書きが表示されましたね。snapshot-locking-enabledが trueになっています。

次に既存ボリュームをSnapshotロックボリュームに変更する場合です。

::*> volume create -vserver svm_use1 -volume vol_ss_lock_2 -aggregate aggr1 -size 16GB -state online -policy default -tiering-policy none -junction-path /vol_ss_lock_2 -snapshot-locking-enabled false
[Job 471] Job succeeded: Successful

::*> volume show -volume vol_ss_lock_2 -fields snapshot-locking-enabledvserver  volume        snapshot-locking-enabled
-------- ------------- ------------------------
svm_use1 vol_ss_lock_2 false

::*> volume modify -vserver svm_use1 -volume vol_ss_lock_2 -snapshot-locking-enabled true

Warning: Snapshot copy locking is being enabled on volume "vol_ss_lock_2" in Vserver "svm_use1". It cannot be disabled until all locked Snapshot copies are past their expiry time. A volume with unexpired locked
         Snapshot copies cannot be deleted.
Do you want to continue? {y|n}: y
Volume modify successful on volume vol_ss_lock_2 of Vserver svm_use1.

::*> volume show -volume vol_ss_lock_2 -fields snapshot-locking-enabled
vserver  volume        snapshot-locking-enabled
-------- ------------- ------------------------
svm_use1 vol_ss_lock_2 true

問題なく変更できました。

Snapshotロックの無効ができることを確認します。

::*> volume modify -vserver svm_use1 -volume vol_ss_lock_2 -snapshot-locking-enabled false
Volume modify successful on volume vol_ss_lock_2 of Vserver svm_use1.

::*> volume show -volume vol_ss_lock_2 -fields snapshot-locking-enabled
vserver  volume        snapshot-locking-enabled
-------- ------------- ------------------------
svm_use1 vol_ss_lock_2 false

::*> volume modify -vserver svm_use1 -volume vol_ss_lock_2 -snapshot-locking-enabled true

Warning: Snapshot copy locking is being enabled on volume "vol_ss_lock_2" in Vserver "svm_use1". It cannot be disabled until all locked Snapshot copies are past their expiry time. A volume with unexpired locked
         Snapshot copies cannot be deleted.
Do you want to continue? {y|n}: y
Volume modify successful on volume vol_ss_lock_2 of Vserver svm_use1.

問題なくできますね。

Tamperproof Snapshotの手動取得

それではTamperproof Snapshotを取得します。

まずは手動で取得する場合です。

事前準備としてNFSクライアントからボリュームをマウントして、適当なファイルを用意しておきます。

$ sudo mkdir -p /mnt/fsxn/vol_ss_lock_1
$ sudo mkdir -p /mnt/fsxn/vol_ss_lock_2
$ sudo mount -t nfs svm-0bed7a19e83f8e6c5.fs-09b61052262da98b8.fsx.us-east-1.amazonaws.com:/vol_ss_lock_1 /mnt/fsxn/vol_ss_lock_1
$ sudo mount -t nfs svm-0bed7a19e83f8e6c5.fs-09b61052262da98b8.fsx.us-east-1.amazonaws.com:/vol_ss_lock_2 /mnt/fsxn/vol_ss_lock_2

$ df -hT -t nfs4
Filesystem                                                                            Type  Size  Used Avail Use% Mounted on
svm-0bed7a19e83f8e6c5.fs-09b61052262da98b8.fsx.us-east-1.amazonaws.com:/vol_ss_lock_1 nfs4   16G  320K   16G   1% /mnt/fsxn/vol_ss_lock_1
svm-0bed7a19e83f8e6c5.fs-09b61052262da98b8.fsx.us-east-1.amazonaws.com:/vol_ss_lock_2 nfs4   16G  320K   16G   1% /mnt/fsxn/vol_ss_lock_2

$ sudo touch /mnt/fsxn/vol_ss_lock_1/test_1.txt

$ ls -l /mnt/fsxn/vol_ss_lock_1/
total 0
-rw-r--r--. 1 root root 0 Jul 29 06:23 test_1.txt

Tamperproof Snapshotを取得します。取得する際はvolume snapshot create-snaplock-expiry-timeオプションで有効期限を指定します。

::*> snapshot create -vserver svm_use1 -volume vol_ss_lock_1 -snapshot ss_lock.2024-07-29_063400 -snapmirror-label ss_lock -snaplock-expiry-time 7/29/2024 06:36:00

::*> snapshot show -volume vol_ss_lock_1 -fields snaplock-expiry-time, expiry-time
vserver  volume        snapshot                  expiry-time snaplock-expiry-time
-------- ------------- ------------------------- ----------- -------------------------
svm_use1 vol_ss_lock_1 ss_lock.2024-07-29_063400 -           7/29/2024 06:36:00 +00:00

ロック期限が7/29/2024 06:36:00のSnapshotが取得されました。

ロック期限前にSnapshotを削除しようとして、怒られることを確認します。

::*> snapshot delete -vserver svm_use1 -volume vol_ss_lock_1 -snapshot ss_lock.2024-07-29_063400

Warning: Deleting a Snapshot copy permanently removes data that is stored only in that Snapshot copy. Are you sure you want to delete Snapshot copy "ss_lock.2024-07-29_063400" for volume "vol_ss_lock_1" in
         Vserver "svm_use1" ? {y|n}: y

Error: command failed: Failed to delete snapshot "ss_lock.2024-07-29_063400" of volume "vol_ss_lock_1" on Vserver "svm_use1". Reason: Illegal operation on Snapshot locked by SnapLock.

::*> date show
  (cluster date show)
Node      Date                      Time zone
--------- ------------------------- -------------------------
FsxId09b61052262da98b8-01
          7/29/2024 06:35:58 +00:00 Etc/UTC
FsxId09b61052262da98b8-02
          7/29/2024 06:35:58 +00:00 Etc/UTC
2 entries were displayed.

NFSクライアントからファイルを削除し、Snapshotのロックがかかっていたとしてもファイルの削除はできることを確認します。

$ sudo rm -rf /mnt/fsxn/vol_ss_lock_1/test_1.txt
$ ls -l /mnt/fsxn/vol_ss_lock_1/
total 0

$ ls -l /mnt/fsxn/vol_ss_lock_1/.snapshot
total 4
drwxr-xr-x. 2 root root 4096 Jul 29 06:23 ss_lock.2024-07-29_063400
$ ls -l /mnt/fsxn/vol_ss_lock_1/.snapshot/ss_lock.2024-07-29_063400/
total 0
-rw-r--r--. 1 root root 0 Jul 29 06:23 test_1.txt

$ date
Mon Jul 29 06:35:45 UTC 2024

ロック期限切れ後にSnapshotが削除できるようになったことを確認します。

::*> date show
  (cluster date show)
Node      Date                      Time zone
--------- ------------------------- -------------------------
FsxId09b61052262da98b8-01
          7/29/2024 06:36:11 +00:00 Etc/UTC
FsxId09b61052262da98b8-02
          7/29/2024 06:36:11 +00:00 Etc/UTC
2 entries were displayed.

::*> snapshot delete -vserver svm_use1 -volume vol_ss_lock_1 -snapshot ss_lock.2024-07-29_063400

Warning: Deleting a Snapshot copy permanently removes data that is stored only in that Snapshot copy. Are you sure you want to delete Snapshot copy "ss_lock.2024-07-29_063400" for volume "vol_ss_lock_1" in
         Vserver "svm_use1" ? {y|n}: y

::*> snapshot show -volume vol_ss_lock_1 -fields snaplock-expiry-time, expiry-time
There are no entries matching your query.

再度Tamperproof Snapshotを取得し、有効期限切れ前は削除できないことを確認します。

::*> snapshot create -vserver svm_use1 -volume vol_ss_lock_1 -snapshot ss_lock.2024-07-29_064200 -snapmirror-label ss_lock -snaplock-expiry-time 7/29/2024 06:45:00

::*> snapshot show  -vserver svm_use1 -volume vol_ss_lock_1 -fields snaplock-expiry-time, expiry-time, afs-used, size, create-time, snapmirror-label, state
vserver  volume        snapshot                  create-time              size  snapmirror-label state afs-used expiry-time snaplock-expiry-time
-------- ------------- ------------------------- ------------------------ ----- ---------------- ----- -------- ----------- -------------------------
svm_use1 vol_ss_lock_1 ss_lock.2024-07-29_064200 Mon Jul 29 06:42:01 2024 140KB ss_lock          -     424KB    -           7/29/2024 06:45:00 +00:00

::*> volume offline -vserver svm_use1 -volume vol_ss_lock_1

Warning: Volume "vol_ss_lock_1" on Vserver "svm_use1" must be unmounted before being taken offline or restricted.  Clients will not be able to access the affected volume and related junction paths after that.  Do
         you still want to unmount the volume and continue? {y|n}: y
Volume "svm_use1:vol_ss_lock_1" is now offline.

::*> volume delete -volume vol_ss_lock_1

Error: command failed: Failed to delete volume "vol_ss_lock_1" in Vserver "svm_use1". The volume has one or more unexpired locked Snapshot copies.

::*> date show
  (cluster date show)
Node      Date                      Time zone
--------- ------------------------- -------------------------
FsxId09b61052262da98b8-01
          7/29/2024 06:43:00 +00:00 Etc/UTC
FsxId09b61052262da98b8-02
          7/29/2024 06:43:00 +00:00 Etc/UTC
2 entries were displayed.

有効期限切れ後にボリュームが削除できるようになったことを確認します。

::*> date show
  (cluster date show)
Node      Date                      Time zone
--------- ------------------------- -------------------------
FsxId09b61052262da98b8-01
          7/29/2024 06:45:04 +00:00 Etc/UTC
FsxId09b61052262da98b8-02
          7/29/2024 06:45:04 +00:00 Etc/UTC
2 entries were displayed.

::*> volume delete -volume vol_ss_lock_1

Error: command failed: Failed to delete volume "vol_ss_lock_1" in Vserver "svm_use1". The volume has one or more unexpired locked Snapshot copies.

削除できませんでした。もしかすると、有効期限切れ前にボリュームをオフラインにしてしまったがために削除できないのかもしれません。

一度ボリュームをオンラインにしてから再度ボリュームを削除します。

::*> snapshot show -vserver svm_use1 -volume vol_ss_lock_1 -fields snaplock-expiry-time, expiry-time, afs-used, size, create-time, snapmirror-label, state
There are no entries matching your query.

Info: Unable to get information for Snapshot copies of volume "vol_ss_lock_1" on Vserver "svm_use1". Reason: Volume not online.

::*> volume online -vserver svm_use1 -volume vol_ss_lock_1
Volume "svm_use1:vol_ss_lock_1" is now online.

::*> snapshot show  -vserver svm_use1 -volume vol_ss_lock_1 -fields snaplock-expiry-time, expiry-time, afs-used, size, create-time, snapmirror-label, state
vserver  volume        snapshot                  create-time              size  snapmirror-label state afs-used expiry-time snaplock-expiry-time
-------- ------------- ------------------------- ------------------------ ----- ---------------- ----- -------- ----------- -------------------------
svm_use1 vol_ss_lock_1 ss_lock.2024-07-29_064200 Mon Jul 29 06:42:01 2024 140KB ss_lock          -     424KB    -           7/29/2024 06:45:00 +00:00

::*> volume offline -vserver svm_use1 -volume vol_ss_lock_1
Volume "svm_use1:vol_ss_lock_1" is now offline.

::*> volume delete -volume vol_ss_lock_1

Warning: Unable to list entries for kernel on node "FsxId09b61052262da98b8-01": Volume is offline.
Info: Volume "vol_ss_lock_1" in Vserver "svm_use1" will be marked as deleted and placed in the volume recovery queue. The space used by the volume will be recovered only after the retention period of 12 hours has
      completed. To recover the space immediately, get the volume name using (privilege:advanced) "volume recovery-queue show vol_ss_lock_1_*" and then "volume recovery-queue purge -vserver svm_use1 -volume
      <volume_name>" command. To recover the volume use the (privilege:advanced) "volume recovery-queue recover -vserver svm_use1 -volume <volume_name>" command.

Warning: Are you sure you want to delete volume "vol_ss_lock_1" in Vserver "svm_use1" ? {y|n}: y
[Job 474] Job succeeded: Successful

::*> volume show -vserver svm_use1 -volume vol_ss_lock_1
There are no entries matching your query.

今度はボリュームを削除できました。有効期限切れ前にボリュームをオフラインにしてしまった場合は一度オンラインにしてあげましょう。

削除したボリュームは再度作り直しておきます。

::*> volume create -vserver svm_use1 -volume vol_ss_lock_1 -aggregate aggr1 -size 16GB -state online -policy default -tiering-policy none -junction-path /vol_ss_lock_1 -snapshot-locking-enabled true

Warning: Snapshot copy locking is being enabled on volume "vol_ss_lock_1" in Vserver "svm_use1". It cannot be disabled until all locked Snapshot copies are past their expiry time. A volume with unexpired locked
         Snapshot copies cannot be deleted.
Do you want to continue? {y|n}: y
[Job 476] Job succeeded: Successful

::*> volume show -volume vol_ss_lock_1 -fields snapshot-locking-enabled
vserver  volume        snapshot-locking-enabled
-------- ------------- ------------------------
svm_use1 vol_ss_lock_1 true

通常のSnapshotをTamperproof Snapshotに変更

通常のSnapshotをTamperproof Snapshotに変更してみます。

volume snapshot modify-snaplock-expiry-time-expiry-timeで有効期限を指定することでTamperproof Snapshotとすることが可能です。

::*> snapshot create -vserver svm_use1 -volume vol_ss_lock_1 -snapshot ss_lock.2024-07-29_065040 -snapmirror-label ss_lock

::*> snapshot show -vserver svm_use1 -volume vol_ss_lock_1 -fields snaplock-expiry-time, expiry-time, afs-used, size, create-time, snapmirror-label, state
vserver  volume        snapshot                  create-time              size  snapmirror-label state afs-used expiry-time snaplock-expiry-time
-------- ------------- ------------------------- ------------------------ ----- ---------------- ----- -------- ----------- -------------------------
svm_use1 vol_ss_lock_1 ss_lock.2024-07-29_065040 Mon Jul 29 06:50:41 2024 172KB ss_lock          -     320KB    -           -

::*> snapshot modify-snaplock-expiry-time -vserver svm_use1 -volume vol_ss_lock_1 -snapshot ss_lock.2024-07-29_065040 -expiry-time 7/29/2024 06:54:00

::*> snapshot show -vserver svm_use1 -volume vol_ss_lock_1 -fields snaplock-expiry-time, expiry-time, afs-used, size, create-time, snapmirror-label, state
vserver  volume        snapshot                  create-time              size  snapmirror-label state afs-used expiry-time snaplock-expiry-time
-------- ------------- ------------------------- ------------------------ ----- ---------------- ----- -------- ----------- -------------------------
svm_use1 vol_ss_lock_1 ss_lock.2024-07-29_065040 Mon Jul 29 06:50:41 2024 172KB ss_lock          -     320KB    -           7/29/2024 06:54:00 +00:00

確かにsnaplock-expiry-timeが設定されています。

Tamperproof Snapshotのロック期限の変更

Tamperproof Snapshotのロック期限の変更してみます。

まずは、現在のロック期限よりも短くしようとしてみます。

::*> snapshot modify-snaplock-expiry-time -vserver svm_use1 -volume vol_ss_lock_1 -snapshot ss_lock.2024-07-29_065040 -expiry-time 7/29/2024 06:53:00

Error: command failed: SnapLock expiry time cannot be before the current expiry time.

はい、怒られました。現在のロック期限よりも短くすることはできないとエラーになっていますね。

次に現在の期限よりも先の時間を設定します。

::*> snapshot modify-snaplock-expiry-time -vserver svm_use1 -volume vol_ss_lock_1 -snapshot ss_lock.2024-07-29_065040 -expiry-time 7/29/2024 06:54:10

::*> snapshot show -vserver svm_use1 -volume vol_ss_lock_1 -fields snaplock-expiry-time, expiry-time, afs-used, size, create-time, snapmirror-label, state
vserver  volume        snapshot                  create-time              size  snapmirror-label state afs-used expiry-time snaplock-expiry-time
-------- ------------- ------------------------- ------------------------ ----- ---------------- ----- -------- ----------- -------------------------
svm_use1 vol_ss_lock_1 ss_lock.2024-07-29_065040 Mon Jul 29 06:50:41 2024 188KB ss_lock          -     320KB    -           7/29/2024 06:54:10 +00:00

こちらは問題なく受け付けられました。フォレンジックなどでデフォルトのロック期限よりも長くロックさせたい場合に役立ちそうですね。

ちなみに、ロック期限を現時刻よりも前の時刻に設定するのは問題なくできました。

::*> date show
  (cluster date show)
Node      Date                      Time zone
--------- ------------------------- -------------------------
FsxId09b61052262da98b8-01
          7/29/2024 06:54:15 +00:00 Etc/UTC
FsxId09b61052262da98b8-02
          7/29/2024 06:54:15 +00:00 Etc/UTC
2 entries were displayed.

::*> snapshot modify-snaplock-expiry-time -vserver svm_use1 -volume vol_ss_lock_1 -snapshot ss_lock.2024-07-29_065040 -expiry-time 7/29/2024 06:54:15

::*> snapshot show -vserver svm_use1 -volume vol_ss_lock_1 -fields snaplock-expiry-time, expiry-time, afs-used, size, create-time, snapmirror-label, state
vserver  volume        snapshot                  create-time              size  snapmirror-label state afs-used expiry-time snaplock-expiry-time
-------- ------------- ------------------------- ------------------------ ----- ---------------- ----- -------- ----------- -------------------------
svm_use1 vol_ss_lock_1 ss_lock.2024-07-29_065040 Mon Jul 29 06:50:41 2024 188KB ss_lock          -     320KB    -           7/29/2024 06:54:15 +00:00

Tamperproof Snapshotを取得するSnapshot Policyの作成

Tamperproof Snapshotを取得するSnapshot Policyを作成して、定期的にTamperproof Snapshotを取得してみましょう。

5分間隔でロック期間30分のSnapshotを取得するSnapshot Policyを作成します。

::*> snapshot policy create -vserver svm_use1 -policy ss_lock_policy -enabled true -schedule1 5min -count1 3 -retention-period1 "30 minutes" -snapmirror-label1 ss_lock

::*> snapshot policy show -policy ss_lock_policy -instance

                  Vserver: svm_use1
     Snapshot Policy Name: ss_lock_policy
  Snapshot Policy Enabled: true
             Policy Owner: vserver-admin
                  Comment: -
Total Number of Schedules: 1
    Schedule       Count  Prefix        SnapMirror Label    Retention Period
    -------------- -----  ------------- ------------------  ------------------
    5min               3  5min          ss_lock             30 minutes

作成したSnapshot Policyをボリュームに適用します。

::*> volume modify -volume vol_ss_lock_1 -snapshot-policy ss_lock_policy

Warning: You are changing the Snapshot policy on volume "vol_ss_lock_1" to "ss_lock_policy". Snapshot copies on this volume that do not match any of the prefixes of the new Snapshot policy will not be deleted.
         However, when the new Snapshot policy takes effect, depending on the new retention count, any existing Snapshot copies that continue to use the same prefixes might be deleted. See the 'volume modify' man
         page for more information.
Do you want to continue? {y|n}: y
Volume modify successful on volume vol_ss_lock_1 of Vserver svm_use1.

::*> volume show -volume vol_ss_lock_1 -fields snapshot-policy
vserver  volume        snapshot-policy
-------- ------------- ---------------
svm_use1 vol_ss_lock_1 ss_lock_policy

しばらくするとSnapshotが取得されていました。ロック期間は取得してから30分後になっていますね。

::*> snapshot show -vserver svm_use1 -volume vol_ss_lock_1 -fields snaplock-expiry-time, expiry-time, afs-used, size, create-time, snapmirror-label, state
vserver  volume        snapshot                  create-time              size  snapmirror-label state afs-used expiry-time snaplock-expiry-time
-------- ------------- ------------------------- ------------------------ ----- ---------------- ----- -------- ----------- -------------------------
svm_use1 vol_ss_lock_1 ss_lock.2024-07-29_065040 Mon Jul 29 06:50:41 2024 192KB ss_lock          -     320KB    -           7/29/2024 06:54:15 +00:00
svm_use1 vol_ss_lock_1 5min.2024-07-29_0700      Mon Jul 29 07:00:00 2024 236KB ss_lock          -     428KB    -           7/29/2024 07:29:49 +00:00
2 entries were displayed.

そのまま25分ほど待ちました。

::*> snapshot show -vserver svm_use1 -volume vol_ss_lock_1 -fields snaplock-expiry-time, expiry-time, afs-used, size, create-time, snapmirror-label, state
vserver  volume        snapshot                  create-time              size  snapmirror-label state afs-used expiry-time snaplock-expiry-time
-------- ------------- ------------------------- ------------------------ ----- ---------------- ----- -------- ----------- -------------------------
svm_use1 vol_ss_lock_1 ss_lock.2024-07-29_065040 Mon Jul 29 06:50:41 2024 192KB ss_lock          -     320KB    -           7/29/2024 06:54:15 +00:00
svm_use1 vol_ss_lock_1 5min.2024-07-29_0700      Mon Jul 29 07:00:00 2024 276KB ss_lock          -     428KB    -           7/29/2024 07:29:49 +00:00
svm_use1 vol_ss_lock_1 5min.2024-07-29_0705      Mon Jul 29 07:05:00 2024 240KB ss_lock          -     392KB    -           7/29/2024 07:34:49 +00:00
svm_use1 vol_ss_lock_1 5min.2024-07-29_0710      Mon Jul 29 07:10:00 2024 284KB ss_lock          -     436KB    -           7/29/2024 07:39:49 +00:00
svm_use1 vol_ss_lock_1 5min.2024-07-29_0715      Mon Jul 29 07:15:00 2024 284KB ss_lock          -     436KB    -           7/29/2024 07:44:49 +00:00
svm_use1 vol_ss_lock_1 5min.2024-07-29_0720      Mon Jul 29 07:20:00 2024 148KB ss_lock          -     380KB    -           7/29/2024 07:49:49 +00:00
svm_use1 vol_ss_lock_1 5min.2024-07-29_0725      Mon Jul 29 07:25:00 2024 384KB ss_lock          -     552KB    -           7/29/2024 07:54:49 +00:00
7 entries were displayed.

::*> date show
  (cluster date show)
Node      Date                      Time zone
--------- ------------------------- -------------------------
FsxId09b61052262da98b8-01
          7/29/2024 07:29:18 +00:00 Etc/UTC
FsxId09b61052262da98b8-02
          7/29/2024 07:29:18 +00:00 Etc/UTC
2 entries were displayed.

Snapshot Policyで指定した世代数は3世代ですが、ロック期限の方が長いため、削除されていないことが分かります。

ロック期間以上経過して、次(タイミングによって次の次)のSnapshot取得で古いSnapshotは削除されます。

::*> date show
  (cluster date show)
Node      Date                      Time zone
--------- ------------------------- -------------------------
FsxId09b61052262da98b8-01
          7/29/2024 07:30:04 +00:00 Etc/UTC
FsxId09b61052262da98b8-02
          7/29/2024 07:30:04 +00:00 Etc/UTC
2 entries were displayed.

::*> snapshot show -vserver svm_use1 -volume vol_ss_lock_1 -fields snaplock-expiry-time, expiry-time, afs-used, size, create-time, snapmirror-label, state
vserver  volume        snapshot                  create-time              size  snapmirror-label state afs-used expiry-time snaplock-expiry-time
-------- ------------- ------------------------- ------------------------ ----- ---------------- ----- -------- ----------- -------------------------
svm_use1 vol_ss_lock_1 ss_lock.2024-07-29_065040 Mon Jul 29 06:50:41 2024 192KB ss_lock          -     320KB    -           7/29/2024 06:54:15 +00:00
svm_use1 vol_ss_lock_1 5min.2024-07-29_0700      Mon Jul 29 07:00:00 2024 276KB ss_lock          -     428KB    -           7/29/2024 07:29:49 +00:00
svm_use1 vol_ss_lock_1 5min.2024-07-29_0705      Mon Jul 29 07:05:00 2024 240KB ss_lock          -     392KB    -           7/29/2024 07:34:49 +00:00
svm_use1 vol_ss_lock_1 5min.2024-07-29_0710      Mon Jul 29 07:10:00 2024 284KB ss_lock          -     436KB    -           7/29/2024 07:39:49 +00:00
svm_use1 vol_ss_lock_1 5min.2024-07-29_0715      Mon Jul 29 07:15:00 2024 284KB ss_lock          -     436KB    -           7/29/2024 07:44:49 +00:00
svm_use1 vol_ss_lock_1 5min.2024-07-29_0720      Mon Jul 29 07:20:00 2024 148KB ss_lock          -     380KB    -           7/29/2024 07:49:49 +00:00
svm_use1 vol_ss_lock_1 5min.2024-07-29_0725      Mon Jul 29 07:25:00 2024 396KB ss_lock          -     552KB    -           7/29/2024 07:54:49 +00:00
svm_use1 vol_ss_lock_1 5min.2024-07-29_0730      Mon Jul 29 07:30:00 2024 136KB ss_lock          -     444KB    -           7/29/2024 07:59:49 +00:00
8 entries were displayed.

---

::*> date show
  (cluster date show)
Node      Date                      Time zone
--------- ------------------------- -------------------------
FsxId09b61052262da98b8-01
          7/29/2024 07:35:25 +00:00 Etc/UTC
FsxId09b61052262da98b8-02
          7/29/2024 07:35:25 +00:00 Etc/UTC
2 entries were displayed.

::*> snapshot show -vserver svm_use1 -volume vol_ss_lock_1 -fields snaplock-expiry-time, expiry-time, afs-used, size, create-time, snapmirror-label, state
vserver  volume        snapshot                  create-time              size  snapmirror-label state afs-used expiry-time snaplock-expiry-time
-------- ------------- ------------------------- ------------------------ ----- ---------------- ----- -------- ----------- -------------------------
svm_use1 vol_ss_lock_1 ss_lock.2024-07-29_065040 Mon Jul 29 06:50:41 2024 192KB ss_lock          -     320KB    -           7/29/2024 06:54:15 +00:00
svm_use1 vol_ss_lock_1 5min.2024-07-29_0705      Mon Jul 29 07:05:00 2024 240KB ss_lock          -     392KB    -           7/29/2024 07:34:49 +00:00
svm_use1 vol_ss_lock_1 5min.2024-07-29_0710      Mon Jul 29 07:10:00 2024 284KB ss_lock          -     436KB    -           7/29/2024 07:39:49 +00:00
svm_use1 vol_ss_lock_1 5min.2024-07-29_0715      Mon Jul 29 07:15:00 2024 284KB ss_lock          -     436KB    -           7/29/2024 07:44:49 +00:00
svm_use1 vol_ss_lock_1 5min.2024-07-29_0720      Mon Jul 29 07:20:00 2024 148KB ss_lock          -     380KB    -           7/29/2024 07:49:49 +00:00
svm_use1 vol_ss_lock_1 5min.2024-07-29_0725      Mon Jul 29 07:25:00 2024 396KB ss_lock          -     552KB    -           7/29/2024 07:54:49 +00:00
svm_use1 vol_ss_lock_1 5min.2024-07-29_0730      Mon Jul 29 07:30:00 2024 148KB ss_lock          -     444KB    -           7/29/2024 07:59:49 +00:00
svm_use1 vol_ss_lock_1 5min.2024-07-29_0735      Mon Jul 29 07:35:00 2024 140KB ss_lock          -     620KB    -           7/29/2024 08:04:49 +00:00
8 entries were displayed.

最新ではないTamperproof Snapshotからのリストア

最新ではないTamperproof Snapshotからリストアしようとした時の挙動を確認します。

::*> snapshot restore -vserver svm_use1 -volume vol_ss_lock_1 -snapshot 5min.2024-07-29_0705

Warning: Snapshot copy "5min.2024-07-29_0705" is not the most recent copy. Promoting this Snapshot copy will delete all copies made after it.
Do you want to continue? {y|n}: y

Warning: Quota rules currently enforced on volume "vol_ss_lock_1" might change during this operation. If the currently enforced quota rules are different from those in Snapshot copy "5min.2024-07-29_0705", you
         might have to resize or reinitialize quotas on this volume after this operation.
Do you want to continue? {y|n}: y

Warning: Export policies currently enforced on the qtrees of volume "vol_ss_lock_1" will not change during this operation. If the currently enforced export policies are different from those in Snapshot copy
         "5min.2024-07-29_0705", reassign the export policies of the qtrees on this volume after this operation.
Do you want to continue? {y|n}: y

Error: command failed: Failed to restore Snapshot copy "5min.2024-07-29_0705". Reason: This operation can destroy worm snapshots.

はい、怒られました。-force trueを付与しても結果は全く同じでした。

ロック期限内の最新のSnapshotであればSnapRestoreできることを確認します。分かりやすいように事前に通常のSnapshotを取得します。

::*> snapshot create -vserver svm_use1 -volume vol_ss_lock_1 -snapshot ss_lock.2024-07-29_073950 -snapmirror-label ss_lock

::*> snapshot show -vserver svm_use1 -volume vol_ss_lock_1 -fields snaplock-expiry-time, expiry-time, afs-used, size, create-time, snapmirror-label, state
vserver  volume        snapshot                  create-time              size  snapmirror-label state afs-used expiry-time snaplock-expiry-time
-------- ------------- ------------------------- ------------------------ ----- ---------------- ----- -------- ----------- -------------------------
svm_use1 vol_ss_lock_1 ss_lock.2024-07-29_065040 Mon Jul 29 06:50:41 2024 192KB ss_lock          -     320KB    -           7/29/2024 06:54:15 +00:00
svm_use1 vol_ss_lock_1 5min.2024-07-29_0705      Mon Jul 29 07:05:00 2024 240KB ss_lock          -     392KB    -           7/29/2024 07:34:49 +00:00
svm_use1 vol_ss_lock_1 5min.2024-07-29_0710      Mon Jul 29 07:10:00 2024 284KB ss_lock          -     436KB    -           7/29/2024 07:39:49 +00:00
svm_use1 vol_ss_lock_1 5min.2024-07-29_0715      Mon Jul 29 07:15:00 2024 284KB ss_lock          -     436KB    -           7/29/2024 07:44:49 +00:00
svm_use1 vol_ss_lock_1 5min.2024-07-29_0720      Mon Jul 29 07:20:00 2024 148KB ss_lock          -     380KB    -           7/29/2024 07:49:49 +00:00
svm_use1 vol_ss_lock_1 5min.2024-07-29_0725      Mon Jul 29 07:25:00 2024 396KB ss_lock          -     552KB    -           7/29/2024 07:54:49 +00:00
svm_use1 vol_ss_lock_1 5min.2024-07-29_0730      Mon Jul 29 07:30:00 2024 148KB ss_lock          -     444KB    -           7/29/2024 07:59:49 +00:00
svm_use1 vol_ss_lock_1 5min.2024-07-29_0735      Mon Jul 29 07:35:00 2024 456KB ss_lock          -     620KB    -           7/29/2024 08:04:49 +00:00
svm_use1 vol_ss_lock_1 ss_lock.2024-07-29_073950 Mon Jul 29 07:39:00 2024 140KB ss_lock          -     400KB    -           -
9 entries were displayed.

::*> snapshot restore -vserver svm_use1 -volume vol_ss_lock_1 -snapshot 5min.2024-07-29_0735

Warning: Snapshot copy "5min.2024-07-29_0735" is not the most recent copy. Promoting this Snapshot copy will delete all copies made after it.
Do you want to continue? {y|n}: y

Warning: Quota rules currently enforced on volume "vol_ss_lock_1" might change during this operation. If the currently enforced quota rules are different from those in Snapshot copy "5min.2024-07-29_0735", you
         might have to resize or reinitialize quotas on this volume after this operation.
Do you want to continue? {y|n}: y

Warning: Export policies currently enforced on the qtrees of volume "vol_ss_lock_1" will not change during this operation. If the currently enforced export policies are different from those in Snapshot copy
         "5min.2024-07-29_0735", reassign the export policies of the qtrees on this volume after this operation.
Do you want to continue? {y|n}: y

::*> snapshot show -vserver svm_use1 -volume vol_ss_lock_1 -fields snaplock-expiry-time, expiry-time, afs-used, size, create-time, snapmirror-label, state
vserver  volume        snapshot                  create-time              size  snapmirror-label state afs-used expiry-time snaplock-expiry-time
-------- ------------- ------------------------- ------------------------ ----- ---------------- ----- -------- ----------- -------------------------
svm_use1 vol_ss_lock_1 ss_lock.2024-07-29_065040 Mon Jul 29 06:50:41 2024 192KB ss_lock          -     320KB    -           7/29/2024 06:54:15 +00:00
svm_use1 vol_ss_lock_1 5min.2024-07-29_0705      Mon Jul 29 07:05:00 2024 240KB ss_lock          -     392KB    -           7/29/2024 07:34:49 +00:00
svm_use1 vol_ss_lock_1 5min.2024-07-29_0710      Mon Jul 29 07:10:00 2024 284KB ss_lock          -     436KB    -           7/29/2024 07:39:49 +00:00
svm_use1 vol_ss_lock_1 5min.2024-07-29_0715      Mon Jul 29 07:15:00 2024 284KB ss_lock          -     436KB    -           7/29/2024 07:44:49 +00:00
svm_use1 vol_ss_lock_1 5min.2024-07-29_0720      Mon Jul 29 07:20:00 2024 148KB ss_lock          -     380KB    -           7/29/2024 07:49:49 +00:00
svm_use1 vol_ss_lock_1 5min.2024-07-29_0725      Mon Jul 29 07:25:00 2024 396KB ss_lock          -     552KB    -           7/29/2024 07:54:49 +00:00
svm_use1 vol_ss_lock_1 5min.2024-07-29_0730      Mon Jul 29 07:30:00 2024 148KB ss_lock          -     444KB    -           7/29/2024 07:59:49 +00:00
svm_use1 vol_ss_lock_1 5min.2024-07-29_0735      Mon Jul 29 07:35:00 2024 156KB ss_lock          -     620KB    -           7/29/2024 08:04:49 +00:00
8 entries were displayed.

直前に取得したss_lock.2024-07-29_073950が削除されたことから、問題なくSnapRestoreできました。

Tiering PolicyをAllに設定した状態でTamperproof Snapshot

Tiering PolicyをAllに設定した状態でTamperproof Snapshotを取得してみます。

分かりやすいように適当にファイルを作成します。

$ sudo dd if=/dev/urandom of=/mnt/fsxn/vol_ss_lock_1/test_256MiB_1 bs=1M count=256
256+0 records in
256+0 records out
268435456 bytes (268 MB, 256 MiB) copied, 1.08799 s, 247 MB/s

現在のTiering PolicyはNoneです。

::*> volume show -volume vol_ss_lock_1 -fields tiering-policy
vserver  volume        tiering-policy
-------- ------------- --------------
svm_use1 vol_ss_lock_1 none

::*> volume show-footprint -volume vol_ss_lock_1

      Vserver : svm_use1
      Volume  : vol_ss_lock_1

      Feature                                         Used       Used%
      --------------------------------             ----------    -----
      Volume Data Footprint                           262.2MB       0%
             Footprint in Performance Tier            297.3MB     100%
             Footprint in FSxFabricpoolObjectStore         0B       0%
      Volume Guarantee                                     0B       0%
      Flexible Volume Metadata                        92.66MB       0%
      Delayed Frees                                   35.12MB       0%
      File Operation Metadata                             4KB       0%

      Total Footprint                                 390.0MB       0%

      Effective Total Footprint                       390.0MB       0%

Tiering PolicyをAllに変更し、データがキャパシティプールストレージに流れていったことを確認します。

::*> volume modify -volume vol_ss_lock_1 -tiering-policy all
Volume modify successful on volume vol_ss_lock_1 of Vserver svm_use1.

::*> volume show -volume vol_ss_lock_1 -fields tiering-policy
vserver  volume        tiering-policy
-------- ------------- --------------
svm_use1 vol_ss_lock_1 all

::*> volume show-footprint -volume vol_ss_lock_1

      Vserver : svm_use1
      Volume  : vol_ss_lock_1

      Feature                                         Used       Used%
      --------------------------------             ----------    -----
      Volume Data Footprint                           263.3MB       0%
             Footprint in Performance Tier            45.38MB      15%
             Footprint in FSxFabricpoolObjectStore
                                                        256MB      85%
      Volume Guarantee                                     0B       0%
      Flexible Volume Metadata                        92.66MB       0%
      Delayed Frees                                   38.06MB       0%
      File Operation Metadata                             4KB       0%

      Total Footprint                                 394.0MB       0%

      Effective Total Footprint                       394.0MB       0%

しばらく放置しましたが、問題なくTamperproof Snapshotは取得されていそうです。

::*> snapshot show -vserver svm_use1 -volume vol_ss_lock_1 -fields snaplock-expiry-time, expiry-time, afs-used, size, create-time, snapmirror-label, state
vserver  volume        snapshot                  create-time              size  snapmirror-label state afs-used expiry-time snaplock-expiry-time
-------- ------------- ------------------------- ------------------------ ----- ---------------- ----- -------- ----------- -------------------------
svm_use1 vol_ss_lock_1 ss_lock.2024-07-29_065040 Mon Jul 29 06:50:41 2024 192KB ss_lock          -     320KB    -           7/29/2024 06:54:15 +00:00
svm_use1 vol_ss_lock_1 5min.2024-07-29_0720      Mon Jul 29 07:20:00 2024 148KB ss_lock          -     380KB    -           7/29/2024 07:49:49 +00:00
svm_use1 vol_ss_lock_1 5min.2024-07-29_0725      Mon Jul 29 07:25:00 2024 396KB ss_lock          -     552KB    -           7/29/2024 07:54:49 +00:00
svm_use1 vol_ss_lock_1 5min.2024-07-29_0730      Mon Jul 29 07:30:00 2024 148KB ss_lock          -     444KB    -           7/29/2024 07:59:49 +00:00
svm_use1 vol_ss_lock_1 5min.2024-07-29_0735      Mon Jul 29 07:35:00 2024 160KB ss_lock          -     620KB    -           7/29/2024 08:04:49 +00:00
svm_use1 vol_ss_lock_1 5min.2024-07-29_0740      Mon Jul 29 07:40:00 2024 564KB ss_lock          -     704KB    -           7/29/2024 08:09:49 +00:00
svm_use1 vol_ss_lock_1 5min.2024-07-29_0745      Mon Jul 29 07:45:00 2024 1.21MB
                                                                                ss_lock          -     257.7MB  -           7/29/2024 08:14:49 +00:00
svm_use1 vol_ss_lock_1 5min.2024-07-29_0750      Mon Jul 29 07:50:00 2024 164KB ss_lock          -     260.4MB  -           7/29/2024 08:19:49 +00:00
8 entries were displayed.

より、分かりやすくするためにさらにファイルを追加します。

$ sudo dd if=/dev/urandom of=/mnt/fsxn/vol_ss_lock_1/test_2GiB_1 bs=1M count=2048
2048+0 records in
2048+0 records out
2147483648 bytes (2.1 GB, 2.0 GiB) copied, 14.06 s, 153 MB/s

キャパシティプールストレージにデータが流れていったことを確認します。

::*> volume show-footprint -volume vol_ss_lock_1

      Vserver : svm_use1
      Volume  : vol_ss_lock_1

      Feature                                         Used       Used%
      --------------------------------             ----------    -----
      Volume Data Footprint                            2.30GB       0%
             Footprint in Performance Tier            97.75MB       4%
             Footprint in FSxFabricpoolObjectStore
                                                       2.25GB      96%
      Volume Guarantee                                     0B       0%
      Flexible Volume Metadata                        92.66MB       0%
      Deduplication Metadata                          11.65MB       0%
           Deduplication                              11.65MB       0%
      Delayed Frees                                   49.73MB       0%
      File Operation Metadata                             4KB       0%

      Total Footprint                                  2.45GB       0%

      Effective Total Footprint                        2.45GB       0%

手動でTamperproof Snapshotを取得します。特にエラーはなっていません。

::*> snapshot create -vserver svm_use1 -volume vol_ss_lock_1 -snapshot 5min.2024-07-29_075410 -snapmirror-label 5min -snaplock-expiry-time 7/29/2024 07:57:00

::*> snapshot show -vserver svm_use1 -volume vol_ss_lock_1 -fields snaplock-expiry-time, expiry-time, afs-used, size, create-time, snapmirror-label, state
vserver  volume        snapshot                  create-time              size  snapmirror-label state afs-used expiry-time snaplock-expiry-time
-------- ------------- ------------------------- ------------------------ ----- ---------------- ----- -------- ----------- -------------------------
svm_use1 vol_ss_lock_1 ss_lock.2024-07-29_065040 Mon Jul 29 06:50:41 2024 192KB ss_lock          -     320KB    -           7/29/2024 06:54:15 +00:00
svm_use1 vol_ss_lock_1 5min.2024-07-29_0720      Mon Jul 29 07:20:00 2024 148KB ss_lock          -     380KB    -           7/29/2024 07:49:49 +00:00
svm_use1 vol_ss_lock_1 5min.2024-07-29_0725      Mon Jul 29 07:25:00 2024 396KB ss_lock          -     552KB    -           7/29/2024 07:54:49 +00:00
svm_use1 vol_ss_lock_1 5min.2024-07-29_0730      Mon Jul 29 07:30:00 2024 148KB ss_lock          -     444KB    -           7/29/2024 07:59:49 +00:00
svm_use1 vol_ss_lock_1 5min.2024-07-29_0735      Mon Jul 29 07:35:00 2024 160KB ss_lock          -     620KB    -           7/29/2024 08:04:49 +00:00
svm_use1 vol_ss_lock_1 5min.2024-07-29_0740      Mon Jul 29 07:40:00 2024 564KB ss_lock          -     704KB    -           7/29/2024 08:09:49 +00:00
svm_use1 vol_ss_lock_1 5min.2024-07-29_0745      Mon Jul 29 07:45:00 2024 1.21MB
                                                                                ss_lock          -     257.7MB  -           7/29/2024 08:14:49 +00:00
svm_use1 vol_ss_lock_1 5min.2024-07-29_0750      Mon Jul 29 07:50:00 2024 244KB ss_lock          -     260.4MB  -           7/29/2024 08:19:49 +00:00
svm_use1 vol_ss_lock_1 5min.2024-07-29_075410    Mon Jul 29 07:54:11 2024 148KB 5min             -     2.29GB   -           7/29/2024 07:57:00 +00:00
9 entries were displayed.

さらに放置して様子を見ましたが、Snapshot Policyによって取得されるSnapshotについても問題ありません。

::*> snapshot show -vserver svm_use1 -volume vol_ss_lock_1 -fields snaplock-expiry-time, expiry-time, afs-used, size, create-time, snapmirror-label, state
vserver  volume        snapshot                  create-time              size  snapmirror-label state afs-used expiry-time snaplock-expiry-time
-------- ------------- ------------------------- ------------------------ ----- ---------------- ----- -------- ----------- -------------------------
svm_use1 vol_ss_lock_1 ss_lock.2024-07-29_065040 Mon Jul 29 06:50:41 2024 192KB ss_lock          -     320KB    -           7/29/2024 06:54:15 +00:00
svm_use1 vol_ss_lock_1 5min.2024-07-29_0725      Mon Jul 29 07:25:00 2024 396KB ss_lock          -     552KB    -           7/29/2024 07:54:49 +00:00
svm_use1 vol_ss_lock_1 5min.2024-07-29_0730      Mon Jul 29 07:30:00 2024 148KB ss_lock          -     444KB    -           7/29/2024 07:59:49 +00:00
svm_use1 vol_ss_lock_1 5min.2024-07-29_0735      Mon Jul 29 07:35:00 2024 160KB ss_lock          -     620KB    -           7/29/2024 08:04:49 +00:00
svm_use1 vol_ss_lock_1 5min.2024-07-29_0740      Mon Jul 29 07:40:00 2024 564KB ss_lock          -     704KB    -           7/29/2024 08:09:49 +00:00
svm_use1 vol_ss_lock_1 5min.2024-07-29_0745      Mon Jul 29 07:45:00 2024 1.21MB
                                                                                ss_lock          -     257.7MB  -           7/29/2024 08:14:49 +00:00
svm_use1 vol_ss_lock_1 5min.2024-07-29_0750      Mon Jul 29 07:50:00 2024 244KB ss_lock          -     260.4MB  -           7/29/2024 08:19:49 +00:00
svm_use1 vol_ss_lock_1 5min.2024-07-29_075410    Mon Jul 29 07:54:11 2024 164KB 5min             -     2.29GB   -           7/29/2024 07:57:00 +00:00
svm_use1 vol_ss_lock_1 5min.2024-07-29_0755      Mon Jul 29 07:55:00 2024 152KB ss_lock          -     2.29GB   -           7/29/2024 08:24:49 +00:00
9 entries were displayed.

SnapRestoreできるか確認しましょう。

ボリューム上からファイルを削除します。

$ sudo rm -rf /mnt/fsxn/vol_ss_lock_1/*
$ ls -l /mnt/fsxn/vol_ss_lock_1/
total 0

最新のSnapshotを使用してSnapRestoreを行います。

::*> snapshot restore -vserver svm_use1 -volume vol_ss_lock_1 -snapshot 5min.2024-07-29_0755

Warning: Quota rules currently enforced on volume "vol_ss_lock_1" might change during this operation. If the currently enforced quota rules are different from those in Snapshot copy "5min.2024-07-29_0755", you
         might have to resize or reinitialize quotas on this volume after this operation.
Do you want to continue? {y|n}: y

Warning: Export policies currently enforced on the qtrees of volume "vol_ss_lock_1" will not change during this operation. If the currently enforced export policies are different from those in Snapshot copy
         "5min.2024-07-29_0755", reassign the export policies of the qtrees on this volume after this operation.
Do you want to continue? {y|n}: y

::*> snapshot show -vserver svm_use1 -volume vol_ss_lock_1 -fields snaplock-expiry-time, expiry-time, afs-used, size, create-time, snapmirror-label, state
vserver  volume        snapshot                  create-time              size  snapmirror-label state afs-used expiry-time snaplock-expiry-time
-------- ------------- ------------------------- ------------------------ ----- ---------------- ----- -------- ----------- -------------------------
svm_use1 vol_ss_lock_1 ss_lock.2024-07-29_065040 Mon Jul 29 06:50:41 2024 192KB ss_lock          -     320KB    -           7/29/2024 06:54:15 +00:00
svm_use1 vol_ss_lock_1 5min.2024-07-29_0725      Mon Jul 29 07:25:00 2024 396KB ss_lock          -     552KB    -           7/29/2024 07:54:49 +00:00
svm_use1 vol_ss_lock_1 5min.2024-07-29_0730      Mon Jul 29 07:30:00 2024 148KB ss_lock          -     444KB    -           7/29/2024 07:59:49 +00:00
svm_use1 vol_ss_lock_1 5min.2024-07-29_0735      Mon Jul 29 07:35:00 2024 160KB ss_lock          -     620KB    -           7/29/2024 08:04:49 +00:00
svm_use1 vol_ss_lock_1 5min.2024-07-29_0740      Mon Jul 29 07:40:00 2024 564KB ss_lock          -     704KB    -           7/29/2024 08:09:49 +00:00
svm_use1 vol_ss_lock_1 5min.2024-07-29_0745      Mon Jul 29 07:45:00 2024 1.21MB
                                                                                ss_lock          -     257.7MB  -           7/29/2024 08:14:49 +00:00
svm_use1 vol_ss_lock_1 5min.2024-07-29_0750      Mon Jul 29 07:50:00 2024 244KB ss_lock          -     260.4MB  -           7/29/2024 08:19:49 +00:00
svm_use1 vol_ss_lock_1 5min.2024-07-29_075410    Mon Jul 29 07:54:11 2024 164KB 5min             -     2.29GB   -           7/29/2024 07:57:00 +00:00
svm_use1 vol_ss_lock_1 5min.2024-07-29_0755      Mon Jul 29 07:55:00 2024 240KB ss_lock          -     2.29GB   -           7/29/2024 08:24:49 +00:00
9 entries were displayed.

リストア後、NFSクライアントからボリューム上のファイルがリストアできたことを確認します。

$ ls -lh /mnt/fsxn/vol_ss_lock_1/
total 2.3G
-rw-r--r--. 1 root root 256M Jul 29 07:44 test_256MiB_1
-rw-r--r--. 1 root root 2.0G Jul 29 07:51 test_2GiB_1

Snapshotを保護したい場合に

Amazon FSx for NetApp ONTAPでTamperproof Snapshotを使ってSnapshotの保護をしてみました。

Snapshotはデータを復元するときの要となる要素です。上手に使用すればランサムウェア攻撃からの影響を抑えることができます。FPolicyやVscan、Cloud Insightなど他レイヤーの仕組みと組み合わせて使用することでより強固な環境を作り上げることができるでしょう。

Tamperproof SnapshotとSnapMirrorについては別記事で紹介しようと思います。

この記事が誰かの助けになれば幸いです。

以上、AWS事業本部 コンサルティング部の のんピ(@non____97)でした!

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.